package com.clhbolg.service;

import com.clhbolg.domain.bo.CommentBo;
import com.clhbolg.domain.vo.CommentVo;
import com.clhbolg.model.dto.CommentAdminDTO;
import com.clhbolg.model.dto.CommentDTO;
import com.clhbolg.model.dto.ReplyDTO;
import com.clhbolg.model.vo.request.CommentVO;
import com.clhbolg.model.vo.request.ConditionVO;
import com.clhbolg.model.vo.request.ReviewVO;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.page.TableDataInfo;

import java.util.Collection;
import java.util.List;

/**
 * 【请填写功能名称】Service接口
 *
 * @author cailinhu
 * @date 2023-02-08
 */
public interface ICommentService {

    /**
     * 查询【请填写功能名称】
     */
    CommentVo queryById(Long id);

    /**
     * 查询【请填写功能名称】列表
     */
    TableDataInfo<CommentVo> queryPageList(CommentBo bo, PageQuery pageQuery);

    /**
     * 查询【请填写功能名称】列表
     */
    List<CommentVo> queryList(CommentBo bo);

    /**
     * 新增【请填写功能名称】
     */
    Boolean insertByBo(CommentBo bo);

    /**
     * 修改【请填写功能名称】
     */
    Boolean updateByBo(CommentBo bo);

    /**
     * 校验并批量删除【请填写功能名称】信息
     */
    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);

    /**
     *获取前6个评论
     * @return
     */
    List<CommentDTO> listTopSixComments();

    TableDataInfo<CommentDTO>  listComments(CommentVO commentVO,PageQuery pageQuery);

    /**
     * 保存评论信息
     *
     * @param commentVO
     */
    void saveComment(CommentVO commentVO);

    List<ReplyDTO> listRepliesByCommentId(Long commentId);

    TableDataInfo<CommentAdminDTO> listCommentsAdmin(ConditionVO conditionVO, PageQuery pageQuery);

    /**
     * 评论审核
     *
     * @param reviewVO
     */
    void updateCommentsReview(ReviewVO reviewVO);

    void delCommentsByIds(List<Long> ids);
}
